ফ্রেন্ড ফাংশন (Friend Function) এবং ফ্রেন্ড ক্লাস (Friend Class) C++ এ ব্যবহৃত বিশেষ ফিচার, যা ক্লাসের প্রাইভেট (private) এবং প্রোটেকটেড (protected) মেম্বারগুলোতে বাইরের ফাংশন বা অন্য ক্লাসের অ্যাক্সেসের অনুমতি দেয়। সাধারণত, ক্লাসের প্রাইভেট মেম্বারে সরাসরি বাইরের অ্যাক্সেস অনুমোদিত নয়, কিন্তু ফ্রেন্ড ফাংশন বা ফ্রেন্ড ক্লাসের মাধ্যমে সেই সীমাবদ্ধতা দূর করা যায়।
ফ্রেন্ড ফাংশন হলো একটি ফাংশন, যা কোনো ক্লাসের private
এবং protected
মেম্বারে সরাসরি অ্যাক্সেস করতে পারে। এই ফাংশনকে ফ্রেন্ড করার জন্য ক্লাসে friend
কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়।
#include <iostream>
using namespace std;
class Box {
private:
int width;
public:
Box(int w) : width(w) {} // কন্সট্রাক্টর
// ফ্রেন্ড ফাংশন ঘোষণা
friend void displayWidth(Box &b);
};
// ফ্রেন্ড ফাংশন ডেফিনেশন
void displayWidth(Box &b) {
cout << "Width: " << b.width << endl; // প্রাইভেট মেম্বারে অ্যাক্সেস
}
int main() {
Box myBox(10); // Box অবজেক্ট তৈরি
displayWidth(myBox); // ফ্রেন্ড ফাংশন কল
return 0;
}
বর্ণনা:
Box
ক্লাসের width
নামের একটি প্রাইভেট মেম্বার আছে।displayWidth()
নামে একটি ফাংশন Box
ক্লাসের ফ্রেন্ড ফাংশন হিসেবে ঘোষণা করা হয়েছে।displayWidth()
ফাংশন width
মেম্বারে সরাসরি অ্যাক্সেস করতে সক্ষম, কারণ এটি Box
ক্লাসের ফ্রেন্ড ফাংশন।public
, private
, এবং protected
মেম্বারে সরাসরি অ্যাক্সেস করতে পারে।::
অপারেটর ব্যবহার করে কল করতে হয় না।ফ্রেন্ড ক্লাস হলো একটি ক্লাস, যা আরেকটি ক্লাসের সমস্ত private
এবং protected
মেম্বারে সরাসরি অ্যাক্সেস করতে পারে। friend
কীওয়ার্ড ব্যবহার করে একটি ক্লাসকে অন্য ক্লাসের ফ্রেন্ড করা যায়। ফ্রেন্ড ক্লাস মূলত তখনই ব্যবহৃত হয়, যখন দুটি ক্লাস ঘনিষ্ঠভাবে সম্পর্কিত হয় এবং একে অপরের তথ্য অ্যাক্সেসের প্রয়োজন হয়।
#include <iostream>
using namespace std;
class Engine {
private:
int horsepower;
public:
Engine(int hp) : horsepower(hp) {}
// Car ক্লাসকে friend হিসেবে ঘোষণা করা
friend class Car;
};
class Car {
public:
void showHorsepower(Engine &e) {
cout << "Horsepower: " << e.horsepower << endl; // প্রাইভেট মেম্বারে অ্যাক্সেস
}
};
int main() {
Engine engine(300); // Engine অবজেক্ট তৈরি
Car car;
car.showHorsepower(engine); // Car ক্লাসের মাধ্যমে horsepower দেখানো
return 0;
}
বর্ণনা:
Engine
ক্লাসে horsepower
নামে একটি প্রাইভেট মেম্বার আছে।Car
ক্লাসকে Engine
ক্লাসের ফ্রেন্ড ক্লাস হিসেবে ঘোষণা করা হয়েছে, যার ফলে Car
ক্লাস Engine
এর প্রাইভেট মেম্বার horsepower
-এ অ্যাক্সেস করতে পারে।Car
ক্লাসের showHorsepower()
মেম্বার ফাংশন engine
অবজেক্টের horsepower
মেম্বার অ্যাক্সেস করতে সক্ষম, কারণ এটি ফ্রেন্ড ক্লাস।ফ্রেন্ড ফাংশন এবং ফ্রেন্ড ক্লাস C++ এ ডেটা অ্যাক্সেসibilটি নিয়ন্ত্রণের জন্য এবং নির্দিষ্ট পরিস্থিতিতে ডেটা হাইডিং বজায় রেখে প্রাইভেট মেম্বারে অ্যাক্সেসের সুবিধার্থে ব্যবহৃত হয়।
common.read_more